# 将列表中的偶数筛选出来
list1 = [1, 2, 3, 4, 5, 6, 7, 8]


def func(num):
    # 保留偶数元素
    if num % 2 == 0:
        return True
    # 过滤奇数元素
    return False


# 依次遍历list1列表中的值，并放到func函数中判断，如果返回的为True就保留下来，并放入列表。为False就舍弃
newList4 = list(filter(func, list1))
print(newList4)

from functools import reduce


# 计算一个整数列表中元素的和

# 一：reduce【def定义函数】
def mySum(x, y):
    return x + y  # 函数必须设置返回值


result0 = reduce(mySum, list1)
print(result0)
"""
mySum(1,2)---->3
mySum(3,3)---->6
mySum(6,4)---->10
mySum(10,5)---->15
"""

# 二：reduce[匿名函数]
result1 = reduce(lambda x, y: x + y, list1)
print(result1)

from functools import reduce

# 自定义一个函数，实现str转换为int的函数  int(xx)
def charToNum(s):
    # 自定义字符串和整型之间的映射关系
    digits = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}

    return digits[s]  # 返回字典对应的key


def func(num, y):  # 函数里面必须要有两个参数
    return (num * 10) + y


# 需求：“24356”------》24356
# a.产生映射关系
r0 = list(map(charToNum, "243567890"))  # 把返回的值添加到列表中
print(r0)
# b.使用reduce累积
r1 = reduce(func, r0)
print(r1)
